// 1780. 判断一个数字是否可以表示成三的幂的和
/**
 * @param {number} n
 * @return {boolean}
 */
// 遍历
var checkPowersOfThree = function (n) {
	let maxIndex = Math.floor(Math.sqrt(n))
	let ret = 0
	while (maxIndex >= 0) {
		const cur = 3 ** maxIndex
		if (cur <= n - ret) {
			ret += cur
		}
		if (ret === n) return true
		maxIndex--
	}
	return false
}

/* 
    进制转换
    我们可以将 n 转换成 3 的进制 如果 n 的 3 进制表示中每一位
    部位2，那么答案为 true 反之则为 false

    例如：n = 12 = (110) n = 21 = (210)
*/
var checkPowersOfThree = function (n) {
	while (n !== 0) {
		if (n % 3 === 2) {
			return false
		}
		n = Math.floor(n / 3)
	}
	return true
}
checkPowersOfThree(12)
